package talayaco.dao.impl;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import talayaco.dao.ProveedorDAO;
import talayaco.resources.connect.SqlMapConfig;

import com.ibatis.sqlmap.client.SqlMapClient;

public class ProveedorDAOImpl implements ProveedorDAO {

	private SqlMapClient sqlMapClient = SqlMapConfig.getSqlMap();

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#insertProveedor(java.util.Map)
	 */
	public void insertProveedor(Map<String, String> datosProveedor)
			throws Exception {
		// Provincia viene con el nombre y no con el id.
		sqlMapClient.insert("insertProveedor", datosProveedor);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#deleteProveedor(java.lang.String)
	 */
	public void deleteProveedor(String nombreProveedor) throws Exception {
		sqlMapClient.delete("deleteProveedor", nombreProveedor);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#getProveedorById(java.lang.Long)
	 */
	@SuppressWarnings("unchecked")
	public Map<String, String> getProveedorByNombre(String nombreProveedor)
			throws Exception {
		Map<String, String> proveedor = (Map<String, String>) sqlMapClient
				.queryForObject("getProveedoresByNombre", nombreProveedor);

		return proveedor;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#getProveedores()
	 */
	@SuppressWarnings("unchecked")
	public List<Map<String, String>> getProveedores(String tipoProveedor)
			throws Exception {

		List<Map<String, String>> proveedor = (List<Map<String, String>>) sqlMapClient
				.queryForList("getProveedores", tipoProveedor);

		return proveedor;

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#existeProveedor()
	 */
	public String existeProveedor(String nombreProveedor) throws Exception {

		String existe = (String) sqlMapClient.queryForObject("existeProveedor",
				nombreProveedor);

		return existe;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#updateProveedor(java.util.Map)
	 */
	public void updateProveedor(Map<String, String> datosProveedor)
			throws Exception {

		sqlMapClient.update("updateProveedor", datosProveedor);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.ProveedorDAO#getIdProveedorByNombre(java.lang.String)
	 */
	public Long getIdProveedorByNombre(String nombre) throws SQLException {
		return (Long) sqlMapClient.queryForObject("getIdProveedorByNombre",
				nombre);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see talayaco.dao.AnimalDAO#validarMovimientosProveedor(java.lang.String)
	 */
	public Long validarMovimientosProveedor(String nombreProveedor)
			throws Exception {
		return (Long) sqlMapClient.queryForObject(
				"validarMovimientosProveedorAnimales", nombreProveedor)
				+ (Long) sqlMapClient.queryForObject(
						"validarMovimientosProveedorMovimiento",
						nombreProveedor);
	}
}
